home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / share / defoma / libdefoma-id.pl < prev    next >
Text File  |  2006-06-17  |  3KB  |  149 lines

  1. sub com_id_list_cache {
  2.     usage_and_exit if (@ARGV == 0);
  3.  
  4.     my $app = shift(@ARGV);
  5.  
  6.     my @caches = get_files("id-cache.*", $ROOTDIR . "/$app.d");
  7.  
  8.     foreach my $i (@caches) {
  9.     if ($i eq 'id-cache') {
  10.         $i = '#DEFAULT#';
  11.     } else {
  12.         $i =~ s/id-cache\.//;
  13.     }
  14.     }
  15.  
  16.     printm("Id Cache: " . join(' ', @caches));
  17.  
  18.     exit 0;
  19. }
  20.  
  21. sub com_id_common {
  22.     my $com = shift;
  23.     usage_and_exit if (@ARGV < 3);
  24.  
  25.     my $appcache = shift(@ARGV);
  26.     my $id = shift(@ARGV);
  27.     my $font = shift(@ARGV);
  28.  
  29.     my $app;
  30.     my $cache;
  31.  
  32.     if ($appcache =~ /^([^\/]+)\/(.*)/) {
  33.     $app = $1;
  34.     $cache = $2;
  35.  
  36.     $cache = '' if ($cache eq '#DEFAULT#');
  37.     } else {
  38.     $app = $appcache;
  39.     $cache = '';
  40.     }
  41.  
  42.     my $obj = defoma_id_open_cache($cache, $app);
  43.  
  44.     unless ($obj) {
  45.     $cache = '#DEFAULT#' if ($cache eq '');
  46.     printw("id-cache $app/$cache not found.");
  47.     exit ERROR;
  48.     }
  49.  
  50.     mylock(1);
  51.     init_all();
  52.  
  53.     if ($com eq 'unset') {
  54.     defoma_id_unset($obj, $id, $font);
  55.     } else {
  56.     defoma_id_set($obj, $id, $font, $com);
  57.     }
  58.  
  59.     term_all();
  60.     defoma_id_close_cache($obj);
  61.     mylock(0);
  62.  
  63.     exit 0;
  64. }
  65.  
  66. sub com_id_alias {
  67.     my $com = shift;
  68.     usage_and_exit if ($com eq 'add-alias' && @ARGV < 4);
  69.     usage_and_exit if ($com eq 'remove-alias' && @ARGV < 3);
  70.  
  71.     my $appcache = shift(@ARGV);
  72.     my $id = shift(@ARGV);
  73.     my $font = shift(@ARGV);
  74.     my $alias = shift(@ARGV);
  75.  
  76.     my $app;
  77.     my $cache;
  78.  
  79.     if ($appcache =~ /^([^\/]+)\/(.*)/) {
  80.     $app = $1;
  81.     $cache = $2;
  82.  
  83.     $cache = '' if ($cache eq '#DEFAULT#');
  84.     } else {
  85.     $app = $appcache;
  86.     $cache = '';
  87.     }
  88.  
  89.     my $obj = defoma_id_open_cache($cache, $app);
  90.  
  91.     unless ($obj) {
  92.     $cache = '#DEFAULT#' if ($cache eq '');
  93.     printw("id-cache $app/$cache not found.");
  94.     exit ERROR;
  95.     }
  96.  
  97.     unless (exists($obj->{hash01}->{$id . ' ' . $font})) {
  98.     printw("id/font $id/$font not found.");
  99.     exit ERROR;
  100.     }
  101.  
  102.     my $i = $obj->{hash01}->{$id . ' ' . $font};
  103.  
  104.     if ($com eq 'add-alias') {
  105.     my $pri = $obj->{3}->[$i];
  106.     my $ctg = $obj->{4}->[$i];
  107.     
  108.     mylock(1);
  109.     init_all();
  110.     
  111.         defoma_id_register($obj, type => 'useralias', id => $alias,
  112.                font => $font, priority => $pri,
  113.                category => $ctg, origin => $id);
  114.     } else {
  115.     if ($obj->{2}->[$i] !~ /^Ua/) {
  116.         printw("id $id is not user-defined alias.");
  117.         exit ERROR;
  118.     }
  119.  
  120.     mylock(1);
  121.     init_all();
  122.     
  123.     defoma_id_unregister($obj, type => 'useralias', id => $id,
  124.                  font => $font);
  125.     }
  126.  
  127.     term_all();
  128.     defoma_id_close_cache($obj);
  129.     mylock(0);
  130.  
  131.     exit 0;
  132. }
  133.  
  134. sub main {
  135.     my $command = shift;
  136.     
  137.     if ($command eq 'list-cache') {
  138.     com_id_list_cache();
  139.     } elsif ($command eq 'install' || $command eq 'exclude') {
  140.     com_id_common($command);
  141.     } elsif ($command eq 'unset') {
  142.     com_id_common('unset');
  143.     } elsif ($command eq 'add-alias' || $command eq 'remove-alias') {
  144.     com_id_alias($command);
  145.     }
  146. }
  147.  
  148. 1;
  149.